package com.hsl.housaileibot001.ai.tools;

import dev.langchain4j.agent.tool.P;
import dev.langchain4j.agent.tool.Tool;
import lombok.extern.slf4j.Slf4j;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

/**
 * @author liul
 * @date 2025/10/18 22:08
 */
@Slf4j
public class InterviewQuestionTool {
    /**
     * 从面试鸭网站获取关键词相关的面试题列表
     *
     * @param keyword 搜索关键词（如"redis"、"java多线程"）
     * @return 面试题列表，若失败则返回错误信息
     */
    @Tool(name = "searchInterviewQuestions", value = """
            根据关键词从 mianshiya.com 获取相关的面试问题。 当用户询问有关特定技术、
            编程概念或工作相关主题的面试问题时，请使用此工具。 输入内容应为明确的搜索词。
            """)
    public String searchInterviewQuestions(@P(value = "搜索关键词") String keyword) {
        List<String> questions = new ArrayList<>();
        // 构建搜索URL（编码关键词以支持中文）
        String encodedKeyword = URLEncoder.encode(keyword, StandardCharsets.UTF_8);
        String url = "https://www.mianshiya.com/search/all?searchText=" + encodedKeyword;
        // 发送请求并解析页面
        Document document;
        try {
            document = Jsoup.connect(url)
                    .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36")
                    .timeout(5000)
                    .get();
        } catch (IOException e) {
            log.error("Failed to fetch interview questions: " + e.getMessage());
            return e.getMessage();
        }
        // 获取面试题列表
        Elements questionElements = document.select(".ant-table-cell > a");
        for (var element : questionElements) {
            questions.add(element.text().trim());
        }
        return String.join("\n", questions);
    }
}

